package com.zshan.clinic.common.util.validate;

public class PhoneValidator {

    // 手机号正则：以1开头，第二位为3~9，后面9位数字（总共11位）
    private static final String MOBILE_REGEX = "^1[3-9]\\d{9}$";

    // 座机号正则：区号（0开头，2~4位）+ 可选“-” + 7~8位数字
    private static final String LANDLINE_REGEX = "^0\\d{2,3}-?\\d{7,8}$";


    /**
     * 判断手机号格式是否合法
     * @param phone 手机号字符串
     * @return true 合法，false 不合法
     */
    public static boolean isValidMobile(String phone) {
        if (phone == null) {
            return false;
        }
        return phone.matches(MOBILE_REGEX);
    }

    /**
     * 判断座机号格式是否合法
     * @param phone 座机号字符串
     * @return true 合法，false 不合法
     */
    public static boolean isValidLandline(String phone) {
        if (phone == null) {
            return false;
        }
        return phone.matches(LANDLINE_REGEX);
    }

    /**
     * 判断是手机号或座机号是否合法
     */
    public static boolean isValidPhone(String phone) {
        return isValidMobile(phone) || isValidLandline(phone);
    }

    // 示例测试
    public static void main(String[] args) {
        String phone1 = "17710034526";   // ✅ 合法（手机）
        String phone2 = "19212345678";   // ✅ 合法（手机）
        String phone3 = "12345678901";   // ❌ 非法
        String phone4 = null;            // ❌ 空值
        String phone5 = "010-12345678";  // ✅ 合法（座机，带-）
        String phone6 = "037112345678";  // ✅ 合法（座机，不带-）
        String phone7 = "0532-7654321";  // ✅ 合法（座机7位数）

        System.out.println("phone1 合法: " + isValidPhone(phone1));
        System.out.println("phone2 合法: " + isValidPhone(phone2));
        System.out.println("phone3 合法: " + isValidPhone(phone3));
        System.out.println("phone4 合法: " + isValidPhone(phone4));
        System.out.println("phone5 合法: " + isValidPhone(phone5));
        System.out.println("phone6 合法: " + isValidPhone(phone6));
        System.out.println("phone7 合法: " + isValidPhone(phone7));
    }
}
